package com.mingserve.raw.service;

import com.mingserve.raw.domain.RawConn;
import com.mingserve.raw.domain.RawGroup;
import com.mingserve.raw.domain.RawTime;
import com.mingserve.raw.domain.dto.SelectDto;
import com.mingserve.raw.domain.vo.FeatureVo;
import com.mingserve.raw.domain.vo.RawConnVo;
import com.mingserve.raw.domain.vo.RawTempVo;
import com.mingserve.raw.domain.vo.RawVo;

import java.util.List;

/**
 * 索引记录Service接口
 *
 * @author lvwshuai
 * @date 2024-02-01
 */
public interface IRawService
{
    /**
     * 新增攒包索引
     *
     * @param rawGroup 攒包索引对象
     * @return 结果
     */
    Boolean insertRawGroup(RawGroup rawGroup);

    /**
     * 新增测点索引
     *
     * @param rawTime
     * @return
     */
    Boolean insertRawTime(RawTime rawTime);

    /**
     * 新增测点统计包索引
     *
     * @param rawConn
     * @return
     */
    Boolean insertRawConn(RawConn rawConn);

    /**
     * 测点最后一次上传的日期
     *
     * @param pointCode
     * @return
     */
    Long getLastDate(String pointCode);

    /**
     * 查询测点某日期下的时间列表
     *
     * @param selectDto
     * @return
     */
    List<Long> getTimeList(SelectDto selectDto);

    /**
     * 查询索引列表
     *
     * @param selectDto
     * @return
     */
    List<RawTime> queryRawTime(SelectDto selectDto);

    /**
     * 查询测点某时间戳下的波形
     *
     * @param selectDto
     * @return
     */
    RawVo getVibRaw(SelectDto selectDto);

    /**
     * 查询测点某时间戳下的波形FFT
     *
     * @param selectDto
     * @return
     */
    RawVo getVibFFT(SelectDto selectDto);

    /**
     * 读取原始Json文件
     *
     * @param rawTime
     * @param dataType acc vel
     * @return
     */
    String getRawJson(RawTime rawTime, String dataType);

    /**
     * 读取原始统计包数据
     *
     * @param rawConn
     * @return
     */
    String getRawConn(RawConn rawConn);

    /**
     * 查询统计包数据
     * @param selectDto
     * @return
     */
    List<RawConn> queryRawConn(SelectDto selectDto);

    /**
     * 查询测点原始温度
     *
     * @param selectDto
     * @return
     */
    RawTempVo queryRawTemp(SelectDto selectDto);

    /**
     * 查询测点统计包数据
     *
     * @param selectDto
     * @return
     */
    RawConnVo queryConn(SelectDto selectDto);

    /**
     * 上传原始数据
     *
     * @param rawTime
     * @return
     */
    boolean uploadRaw(RawTime rawTime);

    /**
     * 删除原始数据文件及索引
     *
     * @param rawTime
     * @return
     */
    int deleteRaw(RawTime rawTime);

    /**
     * 上传原始统计包
     *
     * @param rawConn
     * @return
     */
    boolean uploadRawConn(RawConn rawConn);

    /**
     * 删除原始统计包及索引
     *
     * @param rawConn
     * @return
     */
    int deleteRawConn(RawConn rawConn);

    /**
     * 查询原始特征值
     *
     * @param selectDto
     * @return
     */
    FeatureVo queryFeature(SelectDto selectDto);
}
